Skip to content

[DNM] Sync Serverless CI config/serverless-operator.yaml - #80826

Closed
maschmid wants to merge 1 commit into
openshift:mainfrom
maschmid:sync-serverless-ci
Closed

[DNM] Sync Serverless CI config/serverless-operator.yaml#80826
maschmid wants to merge 1 commit into
openshift:mainfrom
maschmid:sync-serverless-ci

Conversation

@maschmid

@maschmid maschmid commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

testing openshift-knative/hack#988

Summary by CodeRabbit

This PR creates a new CI configuration file for the OpenShift Knative Serverless operator release 1.37, adding support for a new test variant targeting OCP 4.22 with the ocp-4.22-lpGA-lp-ocp-compat profile.

What Changed

The PR adds openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml — a complete CI operator configuration that defines how the Serverless operator is tested on OCP 4.22.

Key Features of This New Test Configuration

Test Strategy: Defines three E2E test jobs running against OCP 4.22:

  • operator-e2e — Validates operator functionality with Kafka support
  • knative-serving-eventing-e2e — Tests Knative Serving and Eventing integration
  • knative-eventing-kafka-broker-e2e — Tests Kafka broker integration

Enhanced Observability Integration: Each test step includes:

  • Integration with RedHatQE's LP-QE tools for structured logging and error handling via ExitTrap--PostProcessPrep
  • Automatic test result reporting with structured naming (DR__RP__CR_COMP_NAME=lp-ocp-compat--Serverless)
  • JUnit-formatted test result collection for integration with Firewatch monitoring

Resource Management:

  • Sets 10-minute grace period for each test to allow proper cleanup
  • Allocates 8-10GB memory limits per test (reduced from 10GB baseline)
  • 100m CPU request per test

Test Infrastructure:

  • Uses AWS CSPI-QE cluster profile for stable test infrastructure
  • Integrates with Firewatch for automatic JIRA ticket creation on test failures
  • Validates against OCP 4.22 nightly candidate builds

This configuration aligns the Serverless operator CI with the LP (Long-Lived Payload) testing framework for OpenShift, enabling more structured compatibility testing across the Knative ecosystem.

@maschmid

Copy link
Copy Markdown
Contributor Author

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 22, 2026
@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

Updates the Serverless operator CI config for OCP 4.22 to the ocp-4.22-lpGA-lp-ocp-compat variant. Renames two step keys, adds DR__RP__CR_COMP_NAME env var and grace_period: 10m0s across all E2E steps, and rewrites all six E2E commands blocks (AWS and AWS FIPS) to use a shared ExitTrap--PostProcessPrep + /tmp/bin/yq stub bash pattern.

Changes

Serverless OCP 4.22 lpGA lp-ocp-compat CI config

Layer / File(s) Summary
Variant rename and step key renames
ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml
zz_generated_metadata.variant updated to ocp-4.22-lpGA-lp-ocp-compat; AWS operator E2E step key renamed to cr--operator-e2e--aws and AWS FIPS step key renamed to operator-e2e--aws-fips.
DR__RP__CR_COMP_NAME env var and grace_period additions
ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml
DR__RP__CR_COMP_NAME (default lp-ocp-compat--Serverless) added to all AWS and AWS FIPS E2E step environments; grace_period: 10m0s introduced to relevant step blocks.
AWS E2E commands rewrite
ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml
operator-e2e, knative-serving-eventing-e2e, and knative-eventing-kafka-broker-e2e AWS steps replaced with multi-line strict bash scripts that source ExitTrap--PostProcessPrep.sh, install a /tmp/bin/yq stub to force yq download, compute LP_IO__ET_PPP__NEW_TS_NAME, then run respective make targets.
AWS FIPS E2E commands rewrite
ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml
Same ExitTrap--PostProcessPrep + yq stub command rewrite applied to the three AWS FIPS E2E steps (operator-e2e, knative-serving-eventing-e2e, knative-eventing-kafka-broker-e2e).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

rehearsals-ack


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 1 inconclusive)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error The file contains PII (email maschmid@redhat.com) in FIREWATCH_DEFAULT_JIRA_ASSIGNEE and uses set -euxo which enables XTRACE logging, exposing all commands to logs. Remove email from config or use a generic/bot email; disable -x flag or redirect sensitive output from logs when xtrace is enabled.
Title check ❓ Inconclusive The PR title '[DNM] Sync Serverless CI config/serverless-operator.yaml' is vague and does not convey meaningful information about the changeset, using generic phrasing like 'Sync' without specifying what substantive changes are being made. Consider revising the title to be more specific about the actual changes, such as 'Update Knative Serverless operator CI config for OCP 4.22 LP compatibility testing' to better describe the core modifications being made.
✅ Passed checks (13 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR modifies CI configuration YAML only, not Ginkgo tests. No test name definitions (It(), Describe(), etc.) present. Check is inapplicable.
Test Structure And Quality ✅ Passed PR modifies only CI operator YAML configuration, not Ginkgo test code. Custom check for test structure quality is not applicable to this PR.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR. Changes are limited to CI configuration YAML for test job definitions, not test source code.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This PR modifies a CI configuration YAML file (not Go test code). It updates CI pipeline configuration for the Knative Serverless operator, not Ginkgo e2e test definitions. The custom check applies...
Topology-Aware Scheduling Compatibility ✅ Passed This PR modifies only a ci-operator configuration file, not deployment manifests or operator code. It contains no Kubernetes resource definitions or scheduling constraints.
Ote Binary Stdout Contract ✅ Passed PR modifies only CI configuration YAML; no Go code, binaries, or test executables present. OTE Binary Stdout Contract check is inapplicable to configuration files.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR modifies a CI configuration YAML file only, not Ginkgo e2e tests. The custom check targets new test additions which are not present in this PR.
No-Weak-Crypto ✅ Passed The PR contains no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB mode, custom crypto, or non-constant-time secret comparisons. The file is a CI/CD config with no cryptographic code.
Container-Privileges ✅ Passed The modified YAML file is a CI operator config containing test definitions, base images, and build configurations. Comprehensive searches found no instances of privileged container settings: no 'pr...
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: maschmid

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 22, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@maschmid: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-knative-serverless-operator-release-1.37-ocp-4.22-lpGA-lp-ocp-compat-images openshift-knative/serverless-operator presubmit Presubmit changed
periodic-ci-openshift-knative-serverless-operator-release-1.37-ocp-4.22-lpGA-lp-ocp-compat-operator-e2e--aws-fips N/A periodic Periodic changed
periodic-ci-openshift-knative-serverless-operator-release-1.37-ocp-4.22-lpGA-lp-ocp-compat-cr--operator-e2e--aws N/A periodic Periodic changed

Prior to this PR being merged, you will need to either run and acknowledge or opt to skip these rehearsals.

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml`:
- Around line 176-192: The curl command fetching the ExitTrap script uses a
mutable branch reference (refs/heads/main) which creates reproducibility and
security risks. Replace the mutable GitHub URL in all six command blocks (the
ones starting at lines 176, 222, 268, 354, 400, and 446) with an immutable
commit SHA instead of refs/heads/main. After fetching with the pinned SHA, add a
checksum verification step to validate the downloaded script before executing it
via eval. Additionally, add curl retry options (such as --retry and
--retry-all-errors flags) to the curl command to improve resilience against
transient network failures.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: f6b264f6-a688-40da-9393-8de0be4b0231

📥 Commits

Reviewing files that changed from the base of the PR and between 9e257dc and ef0a0f5.

⛔ Files ignored due to path filters (2)
  • ci-operator/jobs/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37-periodics.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (1)
  • ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml

Comment on lines +176 to +192
commands: |
set -euxo pipefail; shopt -s inherit_errexit
eval "$(curl -fsSL https://raw.githubusercontent.com/RedHatQE/OpenShift-LP-QE--Tools/refs/heads/main/libs/bash/ci-operator/interop/common/ExitTrap--PostProcessPrep.sh)"
# Avoid conflicts with the older versioned yq from the image:
# Write /tmp/bin/yq as a tiny script (#!/bin/sh; exit 1), so yq --version fails and ExitTrap EnsureReqs downloads latest yq (replacing the stub).
trap '
mkdir -p /tmp/bin
printf "%s\n" "#!/bin/sh" "exit 1" > /tmp/bin/yq && chmod +x /tmp/bin/yq
PATH="/tmp/bin:${PATH}"
LP_IO__ET_PPP__NEW_TS_NAME="${DR__RP__CR_COMP_NAME}--%s" \
ExitTrap--PostProcessPrep junit--serverless-operator__operator-e2e.xml
' EXIT
GOPATH=/tmp/go \
PATH=$PATH:/tmp/go/bin \
SKIP_MESH_AUTH_POLICY_GENERATION=true \
SKIP_SPOT_INSTANCES=true \
make test-e2e-with-kafka

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml"

echo "All remote-eval call sites:"
rg -n 'eval "\$\(curl -fsSL https://raw\.githubusercontent\.com/' "$FILE"

echo
echo "Mutable refs currently used (should be zero after fix):"
rg -n 'raw\.githubusercontent\.com/.*/refs/heads/main/' "$FILE" || true

Repository: openshift/release

Length of output: 2318


Pin and verify the fetched ExitTrap script before eval.

The six command blocks at lines 178, 224, 270, 356, 402, and 448 fetch code directly from a mutable refs/heads/main URL and execute it via eval. This enables upstream compromise/drift and makes CI runs non-reproducible. Pin each fetch to an immutable commit SHA and verify checksum before execution. Add curl retries for resilience.

Suggested hardening pattern
-        eval "$(curl -fsSL https://raw.githubusercontent.com/RedHatQE/OpenShift-LP-QE--Tools/refs/heads/main/libs/bash/ci-operator/interop/common/ExitTrap--PostProcessPrep.sh)"
+        EXITTRAP_URL="https://raw.githubusercontent.com/RedHatQE/OpenShift-LP-QE--Tools/<pinned-commit-sha>/libs/bash/ci-operator/interop/common/ExitTrap--PostProcessPrep.sh"
+        EXITTRAP_SHA256="<expected-sha256>"
+        EXITTRAP_SCRIPT="$(curl --retry 3 --retry-delay 2 --retry-all-errors -fsSL "${EXITTRAP_URL}")"
+        printf '%s  -\n' "${EXITTRAP_SHA256}" | sha256sum -c -
+        eval "${EXITTRAP_SCRIPT}"

Apply to all six command blocks (lines 176–192, 222–238, 268–284, 354–370, 400–416, 446–462).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@ci-operator/config/openshift-knative/serverless-operator/openshift-knative-serverless-operator-release-1.37__ocp-4.22-lpGA-lp-ocp-compat.yaml`
around lines 176 - 192, The curl command fetching the ExitTrap script uses a
mutable branch reference (refs/heads/main) which creates reproducibility and
security risks. Replace the mutable GitHub URL in all six command blocks (the
ones starting at lines 176, 222, 268, 354, 400, and 446) with an immutable
commit SHA instead of refs/heads/main. After fetching with the pinned SHA, add a
checksum verification step to validate the downloaded script before executing it
via eval. Additionally, add curl retry options (such as --retry and
--retry-all-errors flags) to the curl command to improve resilience against
transient network failures.

@maschmid

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@maschmid: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

@maschmid: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@maschmid maschmid closed this Jun 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant